package online.flytool.base.lang;

import online.flytool.base.check.Assert;

import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * @author ：lingchong
 * @date ：Created in 2022/7/16 16:18
 * @description：基础访问者类
 * @modified By：
 * @version: $
 */
public class GetUtils {

    /**
     * 通过map和key获取属性。如果找不到，就会使用加载方法额外加载
     * @param map
     * @param key
     * @param fnLoad
     * @return
     * @param <K>
     * @param <V>
     */
    public static  <K,V> V getMapVal(Map<K,V> map, K key, Function<K,V> fnLoad){
        Assert.notNull(map,"map cloud not null ");
        V val = map.get(key);
        if(val!=null){
            return val;
        }
        val=fnLoad.apply(key);
        if(val!=null){
            map.put(key,val);
        }
        return val;
    }

}